home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / waisgate / wprot.h < prev    next >
C/C++ Source or Header  |  1995-05-09  |  11KB  |  312 lines

  1. /* WIDE AREA INFORMATION SERVER SOFTWARE:
  2.    No guarantees or restrictions.  See the readme file for the full standard
  3.    disclaimer.    
  4.   
  5.    3.26.90    Harry Morris, morris@think.com
  6.    3.30.90  Harry Morris 
  7.                -    removed chunk code from WAISSearchAPDU,
  8.                -    added makeWAISQueryType1Query() and readWAISType1Query() which
  9.                    replace makeWAISQueryTerms() and makeWAISQueryDocs().
  10.    4.11.90  HWM - added definitions of wais element set names
  11.    4.14.90  HWM - changed symbol for relevance feedback query from QT_3 to 
  12.                      QT_RelevanceFeedbackQuery added QT_TextRetrievalQuery as a
  13.                      synonym for QT_BooleanQuery
  14.                 - renamed makeWAISType1Query() to makeWAISTextQuery()
  15.                   renamed readWAISType1Query() to readWAISTextQuery()
  16.    5.29.90  TS - added CSTFreeWAISFoo functions
  17. */
  18.  
  19. #ifndef _H_WAIS_protocol_
  20.  
  21. #define _H_WAIS_protocol_
  22.  
  23. #include "cdialect.h"
  24.  
  25. #include "zprot.h"
  26. #include "ztype1.h"
  27.  
  28. /*----------------------------------------------------------------------*/
  29. /* Data types / constants */
  30.  
  31. /* date factor constants */
  32. #ifndef DF_INDEPENDENT
  33. #define    DF_INDEPENDENT        1
  34. #define DF_LATER        2
  35. #define DF_EARLIER        3
  36. #define DF_SPECIFIED_RANGE    4
  37. #endif
  38.  
  39. /* chunk types */
  40. #define CT_document        0
  41. #define CT_byte            1
  42. #define CT_line            2
  43. #define CT_paragraph    3
  44.  
  45. /* relevance feedback query */
  46. #define QT_RelevanceFeedbackQuery    "3"
  47. #define QT_TextRetrievalQuery        QT_BooleanQuery
  48.  
  49. /* new data tags */
  50. #define DT_UserInformationLength    (data_tag)99
  51. #define    DT_ChunkCode            (data_tag)100
  52. #define    DT_ChunkIDLength        (data_tag)101
  53. #define    DT_ChunkMarker            (data_tag)102
  54. #define    DT_HighlightMarker        (data_tag)103
  55. #define    DT_DeHighlightMarker        (data_tag)104
  56. #define    DT_NewlineCharacters        (data_tag)105
  57. #define    DT_SeedWords            (data_tag)106
  58. #define    DT_DocumentIDChunk        (data_tag)107
  59. #define    DT_ChunkStartID            (data_tag)108
  60. #define    DT_ChunkEndID            (data_tag)109
  61. #define    DT_TextList            (data_tag)110
  62. #define    DT_DateFactor            (data_tag)111
  63. #define    DT_BeginDateRange        (data_tag)112
  64. #define    DT_EndDateRange            (data_tag)113
  65. #define    DT_MaxDocumentsRetrieved    (data_tag)114
  66. #define    DT_SeedWordsUsed        (data_tag)115
  67. #define    DT_DocumentID            (data_tag)116
  68. #define    DT_VersionNumber        (data_tag)117
  69. #define    DT_Score            (data_tag)118
  70. #define    DT_BestMatch            (data_tag)119
  71. #define    DT_DocumentLength        (data_tag)120
  72. #define    DT_Source            (data_tag)121
  73. #define    DT_Date                (data_tag)122
  74. #define    DT_Headline            (data_tag)123
  75. #define    DT_OriginCity            (data_tag)124
  76. #define    DT_PresentStartByte        (data_tag)125
  77. #define    DT_TextLength            (data_tag)126
  78. #define    DT_DocumentText            (data_tag)127
  79. #define    DT_StockCodes            (data_tag)128
  80. #define    DT_CompanyCodes            (data_tag)129
  81. #define    DT_IndustryCodes        (data_tag)130
  82.  
  83. /* added by harry */
  84. #define DT_DocumentHeaderGroup        (data_tag)150
  85. #define DT_DocumentShortHeaderGroup    (data_tag)151
  86. #define DT_DocumentLongHeaderGroup    (data_tag)152
  87. #define DT_DocumentTextGroup        (data_tag)153
  88. #define DT_DocumentHeadlineGroup     (data_tag)154
  89. #define DT_DocumentCodeGroup        (data_tag)155
  90. #define DT_Lines                    (data_tag)131 
  91. #define    DT_TYPE_BLOCK                (data_tag)132
  92. #define DT_TYPE                        (data_tag)133
  93.  
  94. /* wais element sets */
  95. #define ES_DocumentHeader        "Document Header"
  96. #define ES_DocumentShortHeader    "Document Short Header"
  97. #define ES_DocumentLongHeader    "Document Long Header"
  98. #define ES_DocumentText            "Document Text"
  99. #define ES_DocumentHeadline        "Document Headline"
  100. #define ES_DocumentCodes        "Document Codes"
  101.  
  102. typedef struct DocObj { /* specifies a section of a document */
  103.     any*    DocumentID;
  104.     char*   Type;
  105.     long    ChunkCode;
  106.     union {
  107.         long    Pos;
  108.         any*    ID;
  109.     } ChunkStart;
  110.     union {
  111.         long    Pos;
  112.         any*    ID;
  113.     } ChunkEnd;
  114.     } DocObj;
  115.     
  116. /*----------------------------------------------------------------------*/
  117. /* WAIS APDU extensions */
  118.  
  119. typedef struct WAISInitResponse {
  120.     long                ChunkCode;
  121.     long                ChunkIDLength;
  122.     char*                ChunkMarker;
  123.     char*                HighlightMarker;
  124.     char*                 DeHighlightMarker;
  125.     char*                NewlineCharacters;
  126.     /* XXX  need to add UpdateFrequency and Update Time */
  127.     } WAISInitResponse;
  128.  
  129. typedef struct WAISSearch {
  130.     char*                SeedWords;
  131.     DocObj**            Docs;
  132.     char**                TextList;
  133.     long                DateFactor;
  134.     char*                BeginDateRange;
  135.     char*                EndDateRange;
  136.     long                MaxDocumentsRetrieved;
  137.     } WAISSearch;
  138.  
  139. typedef struct WAISDocumentHeader {
  140.     any*                DocumentID;
  141.     long                VersionNumber;
  142.     long                Score;     
  143.     long                BestMatch; 
  144.     long                DocumentLength;
  145.     long                 Lines;
  146.     char**                Types;
  147.     char*                Source;
  148.     char*                Date;
  149.     char*                Headline;
  150.     char*                OriginCity;
  151.     } WAISDocumentHeader;
  152.  
  153. typedef struct WAISDocumentShortHeader {
  154.     any*                DocumentID;
  155.     long                VersionNumber;
  156.     long                Score;     
  157.     long                BestMatch; 
  158.     long                DocumentLength;
  159.     long                 Lines;
  160.      } WAISDocumentShortHeader;
  161.  
  162. typedef struct WAISDocumentLongHeader {
  163.     any*                DocumentID;
  164.     long                VersionNumber;
  165.     long                Score;     
  166.     long                BestMatch; 
  167.     long                DocumentLength;
  168.     long                 Lines;
  169.     char**                Types;
  170.     char*                Source;
  171.     char*                Date;
  172.     char*                Headline;
  173.     char*                OriginCity;
  174.     char*                StockCodes;
  175.     char*                 CompanyCodes;
  176.     char*                IndustryCodes;
  177.      } WAISDocumentLongHeader;
  178.  
  179. typedef struct WAISDocumentText {
  180.     any*                DocumentID;
  181.     long                VersionNumber;
  182.     any*                DocumentText;
  183.     } WAISDocumentText;
  184.     
  185. typedef struct WAISDocumentHeadlines {
  186.     any*                DocumentID;
  187.     long                VersionNumber;
  188.     char*                Source;
  189.     char*                Date;
  190.     char*                Headline;
  191.     char*                OriginCity;
  192.     } WAISDocumentHeadlines;
  193.     
  194. typedef struct WAISDocumentCodes {
  195.     any*                DocumentID;
  196.     long                VersionNumber;
  197.     char*                StockCodes;
  198.     char*                CompanyCodes;
  199.     char*                IndustryCodes;
  200.     } WAISDocumentCodes;
  201.     
  202. typedef struct WAISSearchResponse {
  203.     char*                           SeedWordsUsed;
  204.     WAISDocumentHeader**         DocHeaders;
  205.     WAISDocumentShortHeader**     ShortHeaders;
  206.     WAISDocumentLongHeader**     LongHeaders;
  207.     WAISDocumentText**            Text;
  208.     WAISDocumentHeadlines**        Headlines;
  209.     WAISDocumentCodes**            Codes;
  210.     diagnosticRecord**            Diagnostics;
  211.     } WAISSearchResponse;
  212.  
  213. /*----------------------------------------------------------------------*/
  214. /* Functions */
  215.  
  216. #ifdef __cplusplus
  217. /* declare these as C style functions */
  218. extern "C"
  219.     {
  220. #endif /* def __cplusplus */
  221.  
  222. DocObj* makeDocObjUsingWholeDocument _AP((any* aDocID,char* type));
  223. DocObj* makeDocObjUsingBytes _AP((any* aDocID,char* type,long start,long end));
  224. DocObj* makeDocObjUsingLines _AP((any* aDocID,char* type,long start,long end));
  225. DocObj* makeDocObjUsingParagraphs _AP((any* aDocID,char* type,any* start,any* end));
  226. void freeDocObj _AP((DocObj* doc));
  227.  
  228. WAISInitResponse* makeWAISInitResponse _AP((long chunkCode,long chunkIDLen,
  229.                         char* chunkMarker,char* highlightMarker,
  230.                         char* deHighlightMarker,char* newLineChars));
  231. void freeWAISInitResponse _AP((WAISInitResponse* init));
  232.  
  233. WAISSearch* makeWAISSearch _AP((
  234.     char* seedWords,DocObj** docs,char** textList,
  235.     long dateFactor,char* beginDateRange,char* endDateRange,
  236.     long maxDocsRetrieved));
  237. void freeWAISSearch _AP((WAISSearch* query));
  238.  
  239. WAISDocumentHeader* makeWAISDocumentHeader _AP((
  240.     any* aDocID,long versionNumber,long score,long bestMatch,long docLen,
  241.     long lines,char** types,char* source,char* date,char* headline,char* originCity));
  242. void freeWAISDocumentHeader _AP((WAISDocumentHeader* header));
  243. char* writeWAISDocumentHeader _AP((WAISDocumentHeader* header,char* buffer,long* len));
  244. char* readWAISDocumentHeader _AP((WAISDocumentHeader** header,char* buffer));
  245.  
  246. WAISDocumentShortHeader* makeWAISDocumentShortHeader _AP((
  247.     any* aDocID,long versionNumber,long score,long bestMatch,long docLen,long lines));
  248. void freeWAISDocumentShortHeader _AP((WAISDocumentShortHeader* header));
  249. char* writeWAISDocumentShortHeader _AP((WAISDocumentShortHeader* header,
  250.                                    char* buffer,long* len));
  251. char* readWAISDocumentShortHeader _AP((WAISDocumentShortHeader** header,char* buffer));
  252.  
  253. WAISDocumentLongHeader* makeWAISDocumentLongHeader _AP((
  254.     any* aDocID,long versionNumber,long score,long bestMatch,long docLen,
  255.     long lines,char** types,char* source,char* date, char* headline,char* originCity,
  256.     char* stockCodes,char* companyCodes,char* industryCodes));
  257. void freeWAISDocumentLongHeader _AP((WAISDocumentLongHeader* header));
  258. char* writeWAISDocumentLongHeader _AP((WAISDocumentLongHeader* header,char* buffer,long* len));
  259. char* readWAISDocumentLongHeader _AP((WAISDocumentLongHeader** header,char* buffer));
  260.  
  261. WAISSearchResponse* makeWAISSearchResponse _AP((
  262.     char* seedWordsUsed,WAISDocumentHeader** docHeaders,
  263.     WAISDocumentShortHeader** shortHeaders,
  264.     WAISDocumentLongHeader** longHeaders,
  265.     WAISDocumentText** text,WAISDocumentHeadlines** headlines,
  266.     WAISDocumentCodes** codes,
  267.     diagnosticRecord** diagnostics));
  268. void freeWAISSearchResponse _AP((WAISSearchResponse* response));
  269.  
  270. WAISDocumentText* makeWAISDocumentText _AP((any* aDocID,long versionNumber,
  271.                        any* documentText));
  272. void freeWAISDocumentText _AP((WAISDocumentText* docText));
  273. char* writeWAISDocumentText _AP((WAISDocumentText* docText,char* buffer,long* len));
  274. char* readWAISDocumentText _AP((WAISDocumentText** docText,char* buffer));
  275.  
  276. WAISDocumentHeadlines* makeWAISDocumentHeadlines _AP((
  277.     any* aDocID,long versionNumber,char* source,char* date,char* headline,
  278.     char* originCity));
  279. void freeWAISDocumentHeadlines _AP((WAISDocumentHeadlines* docHeadline));
  280. char* writeWAISDocumentHeadlines _AP((WAISDocumentHeadlines* docHeadline,char* buffer,long* len));
  281. char* readWAISDocumentHeadlines _AP((WAISDocumentHeadlines** docHeadline,char* buffer));
  282.  
  283. WAISDocumentCodes* makeWAISDocumentCodes _AP((
  284.     any* aDocID,long versionNumber,char* stockCodes,char* companyCodes,
  285.     char* industryCodes));
  286. void freeWAISDocumentCodes _AP((WAISDocumentCodes* docCodes));
  287. char* writeWAISDocumentCodes _AP((WAISDocumentCodes* docCodes,char* buffer,long* len));
  288. char* readWAISDocumentCodes _AP((WAISDocumentCodes** docCodes,char* buffer));
  289.  
  290. any* makeWAISTextQuery _AP((DocObj** docs));
  291. DocObj** readWAISTextQuery _AP((any* terms));
  292.  
  293. void CSTFreeWAISInitResponse _AP((WAISInitResponse* init));
  294. void CSTFreeWAISSearch _AP((WAISSearch* query));
  295. void CSTFreeDocObj _AP((DocObj* doc));
  296. void CSTFreeWAISDocumentHeader _AP((WAISDocumentHeader* header));
  297. void CSTFreeWAISDocumentShortHeader _AP((WAISDocumentShortHeader* header));
  298. void CSTFreeWAISDocumentLongHeader _AP((WAISDocumentLongHeader* header));
  299. void CSTFreeWAISSearchResponse _AP((WAISSearchResponse* response));
  300. void CSTFreeWAISDocumentText _AP((WAISDocumentText* docText));
  301. void CSTFreeWAISDocumentHeadlines _AP((WAISDocumentHeadlines* docHeadline));
  302. void CSTFreeWAISDocumentCodes _AP((WAISDocumentCodes* docCodes));
  303. void CSTFreeWAISTextQuery _AP(( any* query));
  304.  
  305. #ifdef __cplusplus
  306.     }
  307. #endif /* def __cplusplus */
  308.  
  309. /*----------------------------------------------------------------------*/
  310.  
  311. #endif /* ndef _H_WAIS_protocol_ */
  312.